package cn.mineserv.video.videoordersystem.utils;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

/**
 * 邮件发送工具类
 * @author Y_YuanZhouLv
 */
public class MailUtil {
    /**
     * 发件人的email
     */
    public static final String FROM = "384076498@qq.com";
    /**
     * 发件人密码--邮箱密码
     */
    public static final String PWD = "qzgjaxzxtchqbjhc";
    public static final int TIMELIMIT = 1000 * 60 * 60 * 24;
    /**
     * 邮件过期时间24小时
     */
    public static final String TITLE = "圆周率平台";
    public static final String HOST = "smtp.qq.com";
    public static final String SMTP = "smtp";
    public static Transport transport;
    /**
     * 邮件处理
     * @param toEmail 邮箱
     * @param content
     * @param isHtml
     * @param title
     * @return
     * @throws AddressException
     * @throws MessagingException
     */
    public static boolean sendEmail(String title, String toEmail, String content, boolean isHtml) throws AddressException, MessagingException {
        //可以加载一个配置文件
        Properties props = new Properties();
        // 使用smtp：简单邮件传输协议
        //存储发送邮件服务器的信息
        props.put("mail.smtp.host", HOST);
        //同时通过验证
        props.put("mail.smtp.auth", "true");
        //用户
        props.put("mail.user", FROM);
        //密码
        props.put("mail.password", PWD);
        //你开启pop3/smtp时的验证码
        props.put("mail.smtp.port", 587);
        //开启tls
        props.put("mail.smtp.starttls.enable", "true");
        //根据属性新建一个邮件会话
        Session session = Session.getInstance(props);
        //session.setDebug(true); //有他会打印一些调试信息。
        // 由邮件会话新建一个消息对象
        MimeMessage message = new MimeMessage(session);
        // 设置发件人的地址
        message.setFrom(new InternetAddress(FROM));
        // 设置收件人,并设置其接收类型为TO
        message.setRecipient(
                Message.RecipientType.TO,
                new InternetAddress(toEmail)
        );
        // 设置标题
        message.setSubject(TITLE + " - " + title);
        Date date = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日");
        String dateString = formatter.format(date);
        // 设置信件内容
        if (isHtml) {
        // 发送HTML邮件，内容样式比较丰富
        message.setContent(content,
                "text/html;charset=UTF-8");
        } else {
            // 发送 纯文本 邮件 todo
            message.setText(content);
        }
        // 设置发信时间
        message.setSentDate(new Date());
        message.saveChanges();// 存储邮件信息
        // 发送邮件
        if (transport == null) {
            transport = session.getTransport(SMTP);
        }
        if (!transport.isConnected()) {
            transport.connect(FROM, PWD);
        }
        // 发送邮件,其中第二个参数是所有已设好的收件人地址
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
        return true;
    }

}
